package ru.ifmo.contest.games;

import java.io.*;
import java.util.*;

/**
 * @author avhaliullin
 */

public class TaskD {
    FastScanner in;
    PrintWriter out;

    public void solve() throws IOException {
        int src1[] = new int[]{in.nextInt() + 1, in.nextInt() + 1, in.nextInt() + 1};
        int src2[] = src1.clone();
        int m[] = new int[]{1, 1, 1};
        for (int i = 0; i < 3; i++) {
            while (src2[i] % 2 == 0) {
                src2[i] /= 2;
                m[i] *= 2;
            }
        }
        int num = (src2[0] ^ src2[1] ^ src2[2]) - 1;
        if (num == 0) {
            out.print("NO");
            return;
        }
        int i = 0;
        List<C> list = new ArrayList<C>();
        list.add(new C(src2[i], i++));
        list.add(new C(src2[i], i++));
        list.add(new C(src2[i], i));
        Collections.sort(list, new Comparator<C>() {
            @Override
            public int compare(C o1, C o2) {
                return o1.val - o2.val;
            }
        });
        src2[list.get(2).pos] = ((list.get(2).val ^ num)) * m[list.get(2).pos];
        while ((src1[list.get(2).pos] - 1) / 2 > (src2[list.get(2).pos] - 1)) {
            src2[list.get(2).pos] *= 2;
        }
        src1[list.get(2).pos] = src2[list.get(2).pos];
        out.println("YES");
        out.print(String.format("%d %d %d", src1[0] - 1, src1[1] - 1, src1[2] - 1));
    }

    public void run(String fileName) {
        try {
            in = new FastScanner(new File(fileName + ".in"));
            out = new PrintWriter(new File(fileName + ".out"));

            solve();

            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    class C {
        C(int val, int pos) {
            this.val = val;
            this.pos = pos;
        }

        int val;
        int pos;
    }


    class FastScanner {
        BufferedReader br;
        StringTokenizer st;

        FastScanner(File f) {
            try {
                br = new BufferedReader(new FileReader(f));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

        String next() {
            while (st == null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }
    }

    public static void main(String[] arg) {
        new TaskD().run("karlsson");
    }
}
